<?php
namespace Admin\Controller;
use Common\Controller\BackendController;

class ArticleCateController extends BackendController
{
    public function _initialize()
    {
        parent::_initialize();
        $this->_mod = D('ArticleCate');
    }
    public function index()
    {
        $big_menu = array('title' => '<div style="position: fixed;bottom:30px;right: 0px;"><a href="http://bbs.itaoke.org" target="_blank">@爱淘客 </a></div>');
        $this->assign('big_menu', $big_menu);
        $sort = $this->_request('sort', 'trim', 'ordid');
        $order = $this->_request('order', 'trim', 'DESC');
        import("ITK.ORG.Tree");
        $tree = new \Tree();
        $tree->icon = array('│ ', '├─ ', '└─ ');
        $tree->nbsp = '&nbsp;&nbsp;&nbsp;';
        $result = $this->_mod->order($sort . ' ' . $order)->select();
        $array = array();
        foreach ($result as $r) {
            $r['str_status'] = '<img data-tdtype="toggle" data-id="' . $r['id'] . '" data-field="status" data-value="' . $r['status'] . '" src="__STATIC__/images/admin/toggle_' . ($r['status'] == 0 ? 'disabled' : 'enabled') . '.gif" />';
            $r['str_manage'] = '<a href="javascript:;" class="J_showdialog" data-uri="' . U('ArticleCate/add', array('pid' => $r['id'])) . '" data-title="' . L('add_article_cate') . '" data-id="add" data-width="500" data-height="360">' . L('add_article_subcate') . '</a> |
                                <a href="javascript:;" class="J_showdialog" data-uri="' . U('ArticleCate/edit', array('id' => $r['id'])) . '" data-title="' . L('edit') . ' - ' . $r['name'] . '" data-id="edit" data-width="500" data-height="290">' . L('edit') . '</a> |
                                <a href="javascript:;" data-acttype="ajax" class="J_confirmurl" data-uri="' . U('ArticleCate/delete', array('id' => $r['id'])) . '" data-msg="' . sprintf(L('confirm_delete_one'), $r['name']) . '">' . L('delete') . '</a>';
            $r['parentid_node'] = $r['pid'] ? ' class="child-of-node-' . $r['pid'] . '"' : '';
            $array[] = $r;
        }
        $str = '<tr id=\'node-$id\' $parentid_node>
                <td align=\'center\'><input type=\'checkbox\' value=\'$id\' class=\'J_checkitem\'></td>
                <td>$spacer<span data-tdtype=\'edit\' data-field=\'name\' data-id=\'$id\' class=\'tdedit\'>$name</span></td>
                <td align=\'center\'>$id</td>
                <td align=\'center\'><span data-tdtype=\'edit\' data-field=\'ordid\' data-id=\'$id\' class=\'tdedit\'>$ordid</span></td>
                <td align=\'center\'>$str_status</td>
                <td align=\'center\'>$str_manage</td>
                </tr>';
        $tree->init($array);
        $list = $tree->get_tree(0, $str);
        $this->assign('list', $list);
        $big_menu = array('title' => L('add_article_cate'), 'iframe' => U('ArticleCate/add'), 'id' => 'add', 'width' => '500', 'height' => '290');
        $this->assign('big_menu', $big_menu);
        $this->assign('list_table', true);
        $this->display();
    }
    public function _before_add()
    {
        $pid = $this->_get('pid', 'intval', 0);
        if ($pid) {
            $spid = $this->_mod->where(array('id' => $pid))->getField('spid');
            $spid = $spid ? $spid . $pid : $pid;
            $this->assign('spid', $spid);
        }
    }
    protected function _before_insert($data = '')
    {
        if ($this->_mod->name_exists($data['name'], $data['pid'])) {
            $this->ajaxReturn(0, L('article_cate_already_exists'));
        }
        $data['spid'] = $this->_mod->get_spid($data['pid']);
        return $data;
    }
    protected function _before_update($data = '')
    {
        if ($this->_mod->name_exists($data['name'], $data['pid'], $data['id'])) {
            $this->ajaxReturn(0, L('article_cate_already_exists'));
        }
        $old_pid = $this->_mod->field('img,pid')->where(array('id' => $data['id']))->find();
        if ($data['pid'] != $old_pid['pid']) {
            $wp_spid_arr = $this->_mod->get_child_ids($data['id'], true);
            if (in_array($data['pid'], $wp_spid_arr)) {
                $this->ajaxReturn(0, L('cannot_move_to_child'));
            }
            $data['spid'] = $this->_mod->get_spid($data['pid']);
        }
        return $data;
    }
    public function ajax_upload()
    {
        if (!empty($_FILES['img']['name'])) {
            $zym_18 = $this->_upload($_FILES['img'], 'article_cate/');
            if ($zym_18['error']) {
                $this->error($zym_18['info']);
            } else {
                $zym_4['img'] = $zym_18['info'][0]['savename'];
                $this->ajaxReturn(1, L('operation_success'), C('itk_attach_path') . 'article_cate/' . $zym_4['img']);
            }
        } else {
            $this->ajaxReturn(0, L('illegal_parameters'));
        }
    }
    public function ajax_getchilds()
    {
        $id = $this->_get('id', 'intval');
        $return = $this->_mod->field('id,name')->where(array('pid' => $id))->select();
        if ($return) {
            $this->ajaxReturn(1, L('operation_success'), $return);
        } else {
            $this->ajaxReturn(0, L('operation_failure'));
        }
    }
}